package org.dromara.system.domain.bo;

import org.dromara.system.domain.AlarmIndicator;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

/**
 * 监测点位业务对象 alarm_indicator
 *
 * @author Lion Li
 * @date 2025-10-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = AlarmIndicator.class, reverseConvertGenerate = false)
public class AlarmIndicatorBo extends BaseEntity {

    /**
     * 主键
     */
    private Long id;

    /**
     * 采集器Id
     */
    @NotBlank(message = "采集器Id不能为空", groups = { AddGroup.class, EditGroup.class })
    private String collectorId;

    /**
     * 工艺位号
     */
    @NotBlank(message = "工艺位号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sysNum;

    /**
     * 点位名称
     */
    @NotBlank(message = "点位名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;

    /**
     * 监测项
     */
    @NotBlank(message = "监测项不能为空", groups = { AddGroup.class, EditGroup.class })
    private String indicatorType;

    /**
     * 高报阈值
     */
    @NotNull(message = "高报阈值不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long highAlarm;

    /**
     * 高高报阈值
     */
    @NotNull(message = "高高报阈值不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long highHighAlarm;

    /**
     * 低报阈值
     */
    @NotNull(message = "低报阈值不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long lowAlarm;

    /**
     * 低低报阈值
     */
    @NotNull(message = "低低报阈值不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long lowLowAlarm;

    /**
     * 仪表上限
     */
    @NotNull(message = "量程上限不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long rangeTop;

    /**
     * 仪表下限
     */
    @NotNull(message = "量程下限不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long rangeBottom;

    /**
     * 实时值
     */
    private Double realValue;

    /**
     * 所属控制系统 1：DCS 2：SIS 3：GDS 4：控制回路 5：MES
     */
    @NotNull(message = "所属控制系统不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long controlSystem;

    /**
     * 报警类型 1：A类报警 2：B类报警 3：一级报警 4：二级报警
     */
    @NotNull(message = "报警类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long alarmType;

    /**
     * 位号描述
     */
    @NotBlank(message = "位号描述不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tagDescription;


}
